package model.characters;

import java.awt.Rectangle;
import java.util.List;

import model.ComponentTypeEnum;
import model.LayerEnum;
import model.ModelComponent;
import model.characters.weapons.Weapon;

public interface CharacterInterface extends ModelComponent{
	
	public Rectangle getRegion();
	public CharacterStateEnum getState();
	public void setState(CharacterStateEnum state);
	public void walk(Integer direction);
	public void run(Integer direction);
	public void jump();
	public void turnDown();
	public void fall(Integer direction);
	public List<Weapon> getWeapons();
	public Weapon getCurrentWeapon();
	public void setCurrentWeapon(Weapon weapon);
	public Integer getLife();
	public void setLife(Integer life);
	
	public void setWalkingR(boolean walkingR);
	public void setWalkingL(boolean walkingL);
	public void setRunning(boolean running);
	public void setShooting(boolean shooting);
	public void setJumping(boolean jumping);
	public void setFalling(boolean falling);
	public void setDirection(Integer direction);
	public Integer getDirection();
	public void setRightDirection(int rightDirection);
	public void setLeftDirection(int leftDirection);
	
	public boolean isWalkingR();
	public boolean isWalkingL();
	public boolean isRunning();
	public int getRightDirection();
	public int getLeftDirection();
	
	public void update();
	public LayerEnum getLayer();
	public Rectangle getHand();
	void die();
	void turnUp();
	boolean isLowered();
	void setLowered(boolean lowered);
	public ComponentTypeEnum getType();
	public boolean isDead();
	public int getStateCode();
	public void setStateCode(Integer stateCode);
	boolean isJumping();
	boolean isShooting();
	boolean isFalling();
	boolean isWalking();
	void setWalking(boolean walking);

}
